package com.niuwa.p2p.service.message;

import java.util.List;
import java.util.Map;

import com.niuwa.p2p.core.enums.MessageTemplateEnum;
import com.niuwa.p2p.core.enums.MsgSourceEnum;
import com.niuwa.p2p.core.mvc.entity.JsonResult;
import com.niuwa.p2p.entity.message.AppReceiver;


/**
 * 发送消息
 * @author money
 *
 */
public interface ISendMsgService {
	/**
	 * p2p平台端消息发送接口
	 * @param custId 用户id
	 * @param custName 用户名称
	 * @param tel 用户电话号码
	 * @param email 用户邮箱
	 * @param extraMsg 额外消息
	 * @param isVoidSMS 是否是语音短信
	 * @param template 发送消息模板
	 * @param sourceMap 对应消息内容数据源
	 * @return
	 */
	public void p2pSendMsg(long custId,String custName,String tel,String email,String extraMsg,boolean isVoiceSMS,MessageTemplateEnum template,Map<MsgSourceEnum,Object> sourceMap);
	
	/**
	 * app端消息发送接口
	 * @param custId
	 * @param custName 用户名称
	 * @param tel 用户电话号码
	 * @param email 用户邮箱
	 * @param extraMsg 额外消息
	 * @param receiverList 消息接收者集合
	 * @param template 发送消息模板
	 * @param sourceMap 对应消息内容数据源
	 */
	public void appSendMsg(long custId,String custName,String tel,String email,String extraMsg,List<AppReceiver> receiverList,MessageTemplateEnum template);
	/**
	 * mc消息发送接口
	 * @param id 渠道id
	 * @param email 渠道邮箱
	 * @param tel 渠道电话
	 * @param template 发送消息模板
	 * @param sourceMap 对应消息内容数据源
	 * @return
	 */
	public void mcSendMsg(long id,String name,String email,String tel,String extraMsg,MessageTemplateEnum template,Map<MsgSourceEnum,Object> sourceMap);
	
	/**
	 * 消息重新发送
	 * @param id p2p_message主键
	 * @return
	 */
	public boolean reSendMsg(long id);
	
	/**
	 * 校验验证码
	 * @param mobile 手机号
	 * @param code 验证码
	 * @param platformType 所属平台（APP、P2P）
	 * @param sendMethod 发送方式(SMS、EMAIL)
	 * @param flag 默认=true
	 * @return
	 */
	public JsonResult verifySmsCode(String mobile,String code,String platformType,String sendMethod,boolean flag);
}
